package com.iuie.ns.datum.service;

import java.io.Serializable;
import java.util.List;

import com.iuie.ns.datum.vo.FileInfoVO;
import com.iuie.ns.datum.vo.FileTagVO;
import com.iuie.ns.frame.service.IBaseService;
import com.iuie.ns.frame.web.dataset.vo.Page;

public interface IFileInfoService  extends IBaseService<FileInfoVO>{

	/**
	 * 查询文件列表
	 * @return 文件列表
	 */
	List<FileInfoVO> queryLst();
	
	/**
	 * 分页查询文件列表
	 * @return 文件列表
	 */
	List<FileInfoVO> queryLst(Page page);
	
	/**
	 * 分页+条件查询文件列表
	 * @return 文件列表
	 */
	List<FileInfoVO> queryLst(Page page,FileInfoVO fileInfo);
	
	/**
	 * 下载文件，更新下载次数
	 * @param fileId 文件ID
	 */
	void downloadFileById(Serializable fileId);
	
	/**
	 * 根据文件标签查找
	 * @param page 分页信息
	 * @param fileTag 文件标签
	 * @return
	 */
	List<FileInfoVO> findByTag(Page page, FileTagVO fileTag);
	
	
	/**
	 * 插入一条记录
	 * @param fileInfo
	 * @return 
	 */
	void addFileInfo(FileInfoVO fileInfo, boolean commit);

	/**
	 * 文件重命名
	 * @param fileId
	 * @param fileName
	 * @return 返回历史文件名
	 */
	String renameFile(Long fileId, String fileName);

	/**
	 * 根据targetId查询文件
	 * @param targetId 
	 * @return
	 * @date 2018年6月18日下午7:35:37
	 */
	List<FileInfoVO> findByTargetId(String targetId);
	
	/**
	 * 根据fileId更新targetId
	 * @param fileId
	 * @param targetId 
	 * @return
	 * @date 2018年6月19日上午8:41:11
	 */
	Integer updateTargetId(Long fileId, String targetId);
	
	/**
	 * 根据targetId删除文件
	 * @param targetId
	 * @return
	 * @date 2018年6月20日上午8:03:39
	 */
	Integer deleteByTargetId(String targetId);
	
	/**
	 * 根据ID查询单条记录
	 * @param fileId
	 * @return
	 * @date 2018年6月20日上午8:50:17
	 */
	FileInfoVO findById(Long fileId);

}
